# 使用官方的 Node.js 镜像作为基础镜像
FROM node:16

# 安装 Yarn
RUN npm install -g yarn --force --registry https://mirrors.cloud.tencent.com/npm/

# 安装 electron
RUN npm install -g electron --force --registry https://mirrors.cloud.tencent.com/npm/

RUN npm install -g webpack webpack-cli --force --registry https://mirrors.cloud.tencent.com/npm/

# 设置工作目录
WORKDIR /app

# 复制 package.json 和 yarn.lock 文件
COPY package.json yarn.lock ./

# 安装项目依赖
# RUN yarn install --registry https://npmmirror.com
RUN yarn --registry https://npmmirror.com

RUN yarn add webpack webpack-cli --dev

# 复制项目文件
COPY . .

# 安装 xvfb 用于虚拟显示，这在没有物理显示器的环境中是必要的
RUN sed -i 's|http://deb.debian.org/debian|http://mirrors.tuna.tsinghua.edu.cn/debian|g' /etc/apt/sources.list && \
    apt-get update && apt-get install -y \
    xvfb \
    libgtk-3-0 \
    libx11-xcb1 \
    libnotify4 \
    libnss3 \
    libxss1 \
    libasound2 \
    libxtst6 \
    libgbm1 \
    xauth \
    libxrandr2 \
    dbus \
    && rm -rf /var/lib/apt/lists/*

# 启动 D-Bus 服务
RUN service dbus start

# 暴露端口（如果需要）
EXPOSE 3000

RUN yarn build

# 启动命令，使用 xvfb 运行 Electron
CMD ["xvfb-run", "--auto-servernum", "--server-args='-screen 0 1024x768x24'", "yarn", "start"]
# CMD ["xvfb-run", "--auto-servernum", "--server-args='-screen 0 1024x768x24'", "yarn", "watch"]
